from flask import Flask, url_for, redirect
from werkzeug.routing import BaseConverter

'''我们自定义的转换器必须要继承当前的BaseConverter父类'''


class MobileConverter(BaseConverter):
    """定义一个匹配手机号码的正则表达式,注意:regex名字不能改变"""
    regex = r'1[3-9]\d{9}'


app = Flask(__name__, static_url_path='/laoxiao', static_folder='static')  # 初始化Flask项目的服务

# 将自定义的转换器添加到转换器列表中
app.url_map.converters['phone'] = MobileConverter  # phone是转换器的名字


@app.route('/')
def hello_world():
    # url_for的主要目的：是为了安装路由列表生成一个动态URL地址
    print(url_for('phone_number', mob_num='18900001111'))
    print(url_for('phone_number', mob_num='18900001111', page=2))
    print(url_for('phone_number', mob_num='18900001111', page='中国'))
    return redirect(url_for('phone_number', mob_num='18900001111'))


@app.route('/phone/<phone:mob_num>')
def phone_number(mob_num):
    return '当前你访问的手机号码是:{}'.format(mob_num)


if __name__ == '__main__':
    # 0.0.0.0代表当前系统中所有的IP ,端口默认是5000 ,flask的debug模式：把错误信息显示到页面中。
    app.run(host='0.0.0.0', port=8080, debug=False)
